package com.itx.gatewayx.config;

import cn.hutool.crypto.SecureUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 密码编码器配置
 * 
 * @author itx
 */
@Configuration
public class PasswordEncoderConfig {
    
    /**
     * 定义一个PasswordEncoder Bean，替代Spring Security的实现
     */
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new PasswordEncoder();
    }
    
    /**
     * 自定义密码编码器实现
     */
    public static class PasswordEncoder {
        
        /**
         * 编码密码
         * 
         * @param rawPassword 原始密码
         * @return 编码后的密码
         */
        public String encode(CharSequence rawPassword) {
            return SecureUtil.md5(rawPassword.toString());
        }
        
        /**
         * 验证密码
         * 
         * @param rawPassword 原始密码
         * @param encodedPassword 编码后的密码
         * @return 是否匹配
         */
        public boolean matches(CharSequence rawPassword, String encodedPassword) {
            return encodedPassword.equals(encode(rawPassword));
        }
        
        /**
         * 判断是否需要升级编码
         * 
         * @param encodedPassword 编码后的密码
         * @return 是否需要升级
         */
        public boolean upgradeEncoding(String encodedPassword) {
            return false;
        }
    }
} 